package com.jelly.concurrency;


class Sleeper extends Thread{
	private int duration;
	
	public Sleeper(String name,int sleepTime){
		super(name);
		this.duration=sleepTime;
		start();
	}
	
	@Override
	public void run() {
		try {
			sleep(duration);
		} catch (InterruptedException e) {
			System.out.println(getName()+" was interrupted " + "isInterrupted(): " +isInterrupted());
		}
		System.out.println(getName()+" has awakened");
	}
}

class Joiner extends Thread{
	private Sleeper sleeper;
	public Joiner(String name,Sleeper sleeper){
		super(name);
		this.sleeper=sleeper;
		start();
	}
	
	@Override
	public void run() {
		try {
			sleeper.join();
		} catch (InterruptedException e) {
			System.out.println(getName()+" Interrupted");
		}
		System.out.println(getName()+" join completed");
	}
}



public class Joining{
	public static void main(String[] args) {
		Sleeper 
		sleepy = new Sleeper("Sleepy", 1500),
		grumpy = new Sleeper("Grumpy", 1500);
		
		Joiner
		dopey = new Joiner("Depey", sleepy),
		doc = new Joiner("Doc", grumpy);
		grumpy.interrupt();
	}
}
